package com.dkm.biz.gl.repository;

import java.util.List;
import java.util.Map;

import com.dkm.base.api.model.Page;
import com.dkm.biz.gl.domain.GlCate;
import com.dkm.biz.gl.persistence.entity.GlCatePo;
import com.dkm.biz.repository.IRepository;
/**
 * 对象功能:总分类表。用于显示树层次结构的分类，可以允许任何层次结构。 Repository接口
 * 开发公司:唯心六艺软件 - Craft6.cn
 * 开发人员:winston
 * 创建时间:2014-07-22 11:07:05
 */
public interface GlCateRepository extends IRepository<String, GlCatePo,GlCate>{
	/**
	 * 根据类型键查询分类树集合
	 * @param typeKey
	 * @return 
	 * List<GlCatePo>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<GlCatePo> findTree(String typeKey);
	
	/**
	 * 同上方法，只是会被缓存
	 * @param typeKey
	 * @return 
	 * List<GlCatePo>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<GlCatePo> findTreeCache(String typeKey);	
	
	public List<GlCatePo> findAllTree();
	
	public List<GlCatePo> findAllTreeCache();
	
	public GlCate getByCateKey(String typeKey,String cateKey);
	
	/**
	 * 返回一级风格分类
	 * @return
	 */
	public List<GlCatePo> findHomeStyles();
	
	/**
	 * 返回全部风格分类（按树结构）
	 * @return
	 */
	public List<GlCatePo> findHomeStylesAllTree();
	
	/**
	 * 返回一级家居分类
	 * @return
	 */
	public List<GlCatePo> findHomeCates();
	/**
	 * 根据父业务键返回分类集合
	 * @param parentKey
	 * @return
	 */
	public List<GlCatePo> findHomeCates(String parentKey,Integer stat,String bizType,String seoType);
	
	public List<GlCatePo> findHomeCatesAll();
	
	public List<GlCatePo> findHomeStyles(String parentKey,Integer stat,String bizType,String seoType);
	
	public List<GlCatePo> findWholeStyles();
	public List<GlCatePo> findWholeCates(String parentKey,Integer stat,String bizType,String seoType);
	public List<GlCatePo> findWholeCates();
	
	/**
	 * 在缓存中根据ID拿数据
	 * @param id
	 * @return
	 */
	public GlCatePo findGlCatePoById(String id);
	
	public List<GlCatePo> findAllCache();
		
	public GlCatePo findCatePoByKey(String cateKey,Integer star,String bizType,String seoType);
	
	public List<GlCatePo> findByTypeKeyAndParentId(String typeKey,String parentId,Integer stat,String bizType,String seoType);
	
	/**
	 * 根据分类key获取分类及所有子孙分类
	 */
	public GlCatePo getCatePosByKey(String key,Integer star,String bizType,String seoType);
	/**
	 * 根据分类key获取父分类
	 */
	public GlCatePo getCatePoByChild(String key);
	
	public List<GlCatePo> findAllPaged(Map<String, Object> buildMap, Page page);

	public List<GlCatePo> findByParentId(String parentId);

	/**
	 * TODO方法名称描述
	 * @param dataType
	 * @return 
	 * List<GlCatePo>
	 * @exception 
	 * @since  1.0.0
	 */
	public List<GlCatePo> getCateKeyCombox(String dataType);

	public List<GlCatePo> findIdByParentName(String qtTypeId);

	public List<GlCatePo> findAllParentByKey(String key);
	
	public List<GlCatePo> findCateSyncList(Page page);
	
	public int findCateSyncListCount();
	
	public List<GlCatePo> findByTypeKey(String typeKey);
	
	public List<GlCatePo> findGlCateByDepthAndTypeKey(String depth,String typeKey);

	public List<GlCatePo> parentFindChildKeyAndSelf(List<String> cateKeysList);
	
	public GlCatePo findCateByTypeKeyAndKey(String typeKey,String key);
	
	public List<GlCatePo> findCateByPath(String path,String tag);

	public List<GlCatePo> findByAirs(Map<String, Object> params);

	public List<GlCatePo> getRouteCityContent(String cateIds);

	public List<GlCatePo> findByShopAndCateType(String shopId, String cateType);
}
